#ifndef LED_H
#define LED_H

#pragma pack(1) // 关闭字节对齐

#define LED_ON (1)  // led打开
#define LED_OFF (0) // led关闭

#include <errno.h>
#include <fcntl.h>
#include <iostream>
#include <map>
#include <math.h>
#include <pthread.h>
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include <string>
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
#include <vector>

using namespace std;

class Led {
  public:
    // 析构、构造
    ~Led();
    Led(const string path, const vector< uint8_t > nums, const uint8_t state);

    // 获取状态、设置状态
    uint32_t &get_state(const uint8_t num);
    Led &set_state(const uint8_t num, const uint8_t state);

  private:
    int32_t fd;                     // led指针
    uint32_t state;                 // 状态
    map< uint8_t, uint8_t > states; // 状态映射
};
#endif